<html>

	<head>
		<title>5.13 多数据源支持</title>
		<meta charset="utf-8" />
		<meta name="author" content="jfinal,yaolin" />
		<meta name="Keywords" content="" />
		<link rel="stylesheet" type="text/css" href="../../css/global.css" />
	</head>

	<body>
		<h1>5.13 多数据源支持</h1>
		<p>ActiveRecordPlugin 可同时支持多数据源、多方言、多缓存、多事务级别等特性，对每个 ActiveRecordPlugin 可进行彼此独立的配置。简言之 JFinal 可以同时使用多数据源，并且可 以针对这多个数据源配置独立的方言、缓存、事务级别等。
		</p>
		<p>当使用多数据源时，只需要对每个 ActiveRecordPlugin 指定一个 configName 即可，如下是 代码示例：
		</p>
		<img src="../../images/ativeRecord/5.13.1.png" />
		<p>以上代码创建了创了两个 ActiveRecordPlugin 实例 arpMysql 与 arpOrace，特别注意创建实 例的同时指定其 configName 分别为 mysql 与 oracle。 arpMysql 与 arpOracle 分别映射了不同的 Model，配置了不同的方言。
		</p>
		<p>对于 Model 的使用，不同的 Model 会自动找到其所属的 ActiveRecrodPlugin 实例以及相关 配置进行数据库操作。 假如希望同一个 Model 能够切换到不同的数据源上使用，也极度方便， 这种用法非常适合不同数据源中的 table 拥有相同表结构的情况，开发者希望用同一个 Model 来操作这些相同表结构的 table，以下是示例代码：</p>
		<img src="../../images/ativeRecord/5.13.2.png" />
		<p>上例中的代码， blog.use(“backupDatabase”)方法切换数据源到 backupDatabase 并直接将数 据保存起来。
		</p>
		<p><span class="red">特别注意：</span> 只有在同一个 Model 希望对应到多个数据源的 table 时才需要使用 use 方法，如果 同一个 Model 唯一对应一个数据源的一个 table，那么数据源的切换是自动的，无需使用 use 方法。
		</p>
		<p>对于 Db + Record 的使用， 数据源的切换需要使用 Db.use(cnfigName)方法得到数据库操作 对象，然后就可以进行数据库操作了，以下是代码示例：
		</p>
		<img src="../../images/ativeRecord/5.13.3.png" />
		<p>以上两行代码，分别通过 configName 为 mysql、 oracle 得到各自的数据库操作对象，然后 就可以如同单数据完全一样的方式来使用数据库操作 API 了。 简言之， 对于 Db + Record 来 说，多数据源相比单数据源仅需多调用一下 Db.use(configName)，随后的 API 使用方式完全一 样。
		</p>
		<p>注意最先创建的 ActiveRecrodPlugin 实例将会成为主数据源，可以省略 configName。 最先 创建的 ActiveRecrodPlugin 实例中的配置将默认成为主配置，此外还可以通过设置 configName 为 DbKit.MAIN_CONFIG_NAME 常量来设置主配置。</p>
	</body>

</html>